home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / concentr.bas < prev    next >
BASIC Source File  |  1988-11-09  |  6KB  |  169 lines

  1. 1  ' **********************************************************
  2. 2 '
  3. 3  ' This program plays the game of concentration.
  4. 4  ' There are 12 possible levels of difficulty.
  5. 5  ' The program can handle from 1 to 6 players.
  6. 6  '          - programmed by Anne Taft
  7. 7  '
  8. 8  ' *********************************************************
  9. 10 CLS
  10. 12 OPTION BASE 1
  11. 14 DEFINT X
  12. 16 DIM XUSED(52),XSCORE(6)
  13. 18 DIM T$(52),CARD$(52),P$(6)
  14. 100 REM ******** initialize game *************
  15. 150 GOSUB 1400     ' # of players & skill level
  16. 190 RESTORE 300
  17. 200 FOR X = 1 TO XNL
  18. 210 READ N$
  19. 220 CARD$(X) = N$ + CHR$(3)
  20. 230 CARD$(X+XNL) = N$ + CHR$(4)
  21. 240 CARD$(X+(2*XNL)) = N$ + CHR$(5)
  22. 250 CARD$(X+(3*XNL)) = N$ + CHR$(6)
  23. 260 NEXT X
  24. 270 FOR X = 1 TO XN
  25. 280 XUSED(X) = 0
  26. 290 NEXT X
  27. 300 DATA " A"," 2"," 3"," 4"," 5"," 6"," 7"," 8"," 9","10"," J"," Q"," K"
  28. 310 FOR XX = 1 TO 2
  29. 320 N = VAL(MID$(TIME$,7,2))
  30. 330 RANDOMIZE N
  31. 340 REM ****** SHUFFLE AND DEAL ******
  32. 350 FOR X = 1 TO (XN-1)
  33. 360 XL = INT((XN+1-X)*RND(1)+1)
  34. 370 SWAP CARD$(X) , CARD$(XL+X-1)
  35. 380 NEXT X
  36. 390 NEXT XX
  37. 395 RESTORE 440
  38. 400 FOR X = 1 TO XN
  39. 410 READ N$
  40. 420 T$(X) = N$
  41. 430 NEXT X
  42. 440 DATA " 1 "," 2 "," 3 "," 4 "," 5 "," 6 "," 7 "," 8 "," 9 "," 10"," 11"," 12"
  43. 450 DATA " 13"," 14"," 15"," 16"," 17"," 18"," 19"," 20"," 21"," 22"," 23"," 24"
  44. 460 DATA " 25"," 26"," 27"," 28"," 29"," 30"," 31"," 32"," 33"," 34"," 35"," 36"
  45. 470 DATA " 37"," 38"," 39"," 40"," 41"," 42"," 43"," 44"," 45"," 46"," 47"," 48"
  46. 480 DATA " 49"," 50"," 51"," 52"
  47. 490 INPUT "Press RETURN to start the game", N$
  48. 500 FOR X=1 TO XPN: XSCORE(X) = 0:NEXT X
  49. 505 XSUM = 0
  50. 510 MATCH = 0
  51. 512 XT = 1
  52. 520 XTURN = 0
  53. 530 REM  *********** START OF MAJOR LOOP *************************
  54. 535 XTURN = XTURN + 1
  55. 540 GOSUB 1120    'DISPLAY ROUTINE
  56. 550 IF XPN=1 THEN PRINT  ELSE PRINT P$(XT);"'S TURN:"
  57. 560 INPUT "First card selected:   ",XTRY1
  58. 570 IF XTRY1 < 1 THEN GOTO 600
  59. 580 IF XTRY1 > XN THEN GOTO 600
  60. 590 GOTO 620
  61. 600 PRINT "Please choose a card number between 1 and ";XN;"."
  62. 610 GOTO 560
  63. 620 FOR X = 1 TO XN
  64. 630 IF XTRY1 =XUSED(X) GOTO 660
  65. 640 NEXT X
  66. 650 GOTO 690
  67. 660 PRINT "The card you have chosen has already been matched."
  68. 670 PRINT "Please choose another card."
  69. 680 GOTO 560
  70. 690 INPUT "Second card selected:  ",XTRY2
  71. 700 IF XTRY2 < 1 THEN GOTO 760
  72. 710 IF XTRY2 > XN THEN GOTO 760
  73. 720 IF XTRY2 <> XTRY1 THEN GOTO 780
  74. 730 PRINT "That card was your first selection."
  75. 740 PRINT "Please choose a different card."
  76. 750 GOTO 690
  77. 760 PRINT "Please choose a card number between 1 and ";XN;"."
  78. 770 GOTO 690
  79. 780 FOR X = 1 TO XN
  80. 790 IF XTRY2 = XUSED(X) THEN GOTO 820
  81. 800 NEXT X
  82. 810 GOTO 850
  83. 820 PRINT "The card you have chosen has already been matched."
  84. 830 PRINT "Please choose another card."
  85. 840 GOTO 690
  86. 850 IF LEFT$(CARD$(XTRY1),2) = LEFT$(CARD$(XTRY2),2)  THEN MATCH = 1
  87. 860 TEMP1$ = T$(XTRY1)
  88. 870 T$(XTRY1) = CARD$(XTRY1)
  89. 880 TEMP2$ = T$(XTRY2)
  90. 890 T$(XTRY2) = CARD$(XTRY2)
  91. 900 GOSUB 1120   'DISPLAY ROUTINE
  92. 910 IF MATCH = 0 GOTO 915
  93. 912 PRINT: PRINT  "                         GOOD!  You have a match!"
  94. 915 REM
  95. 925 IF LEFT$(N$,1) = "0" GOTO 1010
  96. 930 IF MATCH = 1 GOTO 960
  97. 940 T$(XTRY1) = TEMP1$
  98. 950 T$(XTRY2) = TEMP2$
  99. 960 REM
  100. 970 IF MATCH=1 THEN XSCORE(XT)=XSCORE(XT)+1: XSUM=XSUM+1
  101. 980 IF MATCH = 1 THEN XUSED((2*XSUM)-1) = XTRY1
  102. 990 IF MATCH = 1 THEN XUSED(2*XSUM) = XTRY2
  103. 995 XT=XT+1:IF XT>XPN THEN XT=1   ' WHO'S NEXT?
  104. 1000 MATCH = 0
  105. 1001 PRINT: PRINT
  106. 1002 INPUT "Strike RETURN to continue, 0 to quit:  ",N$
  107. 1003 IF (2*XSUM) >= XN GOTO 1010
  108. 1004 IF LEFT$(N$,1) = "0" GOTO 1010
  109. 1005 GOTO 530
  110. 1010 REM  *************END OF MAJOR LOOP*****************************
  111. 1020 GOSUB 1300       ' scoring routine
  112. 1030 INPUT "Do you want to play another game now?  ", N$
  113. 1040 A$ = LEFT$(N$,1)
  114. 1050 IF A$ = "Y" GOTO 100
  115. 1060 IF A$ = "y" GOTO 100
  116. 1070 IF A$ = "N" GOTO 1220
  117. 1080 IF A$ = "n" GOTO 1220
  118. 1090 PRINT "Please answer yes or no:"
  119. 1100 GOTO 1030
  120. 1110 REM **********DISPLAY ROUTINE**************************
  121. 1120 GOSUB 1250             'CLS AND PRINT HEADING
  122. 1130 XTAB = (77-5*(XNL-1))\2
  123. 1150 FOR XR = 0 TO 3
  124. 1160 PRINT: PRINT: PRINT TAB(XTAB);
  125. 1170 FOR X = 1 TO XNL
  126. 1180 PRINT T$(X+(XR*XNL));SPACE$(2);
  127. 1190 NEXT X
  128. 1200 NEXT XR
  129. 1205 PRINT
  130. 1210 RETURN
  131. 1215 REM **********END OF PROGRAM*************************
  132. 1220 PRINT "Goodbye. "
  133. 1230 END
  134. 1250 REM ********CLEAR SCREEN & PRINT HEADING ************
  135. 1260 CLS:PRINT:PRINT:PRINT TAB(33);"CONCENTRATION"
  136. 1270 PRINT:PRINT:RETURN
  137. 1300 REM *********** FINAL SCORING ************************
  138. 1310 GOSUB 1250
  139. 1320 IF XPN > 1 THEN GOTO 1350
  140. 1330 PRINT TAB(10);"Your score is ";XSCORE(1);" matches in ";XTURN;" tries."
  141. 1340 PRINT: RETURN
  142. 1350 FOR X = 1 TO XPN
  143. 1360 PRINT TAB(10);"Score of ";P$(X);" is ";XSCORE(X);" matches."
  144. 1370 PRINT: NEXT X
  145. 1380 RETURN
  146. 1400 REM ***** selection of no. of players and skill level ******
  147. 1410 GOSUB 1250    'CLS and print heading
  148. 1420 INPUT "From 1 to 6 players may play.  How many this time? ",XPN
  149. 1430 IF XPN = 1 THEN GOTO 1500
  150. 1440 IF (XPN>6)OR(XPN<1) GOTO 1410
  151. 1450 FOR X = 1 TO XPN
  152. 1460 PRINT:PRINT "Name of player # ";X:INPUT " : ",P$(X)
  153. 1470 NEXT X
  154. 1500 REM *** skill level ***
  155. 1510 GOSUB 1250    'CLS and print heading
  156. 1520 PRINT "You can play at any one of 12 different levels of skill."
  157. 1540 PRINT TAB(10);"B - Beginner - easy";TAB(40);"6 - Intermediate"
  158. 1550 PRINT TAB(10);"1";TAB(40);"7"
  159. 1560 PRINT TAB(10);"2";TAB(40);"8 - Advanced Intermediate"
  160. 1570 PRINT TAB(10);"3 - Advanced Beginner";TAB(40);"9"
  161. 1580 PRINT TAB(10);"4";TAB(40);"A - Advanced"
  162. 1590 PRINT TAB(10);"5";TAB(40);"E - Expert"
  163. 1600 PRINT:INPUT "Please select a skill level for this game: ",XL$
  164. 1610 XNL = INSTR(2," B123456789AE",XL$)
  165. 1620 IF XNL = 0 THEN GOTO 1500    ELSE XN = 4*XNL
  166. 1650 RETURN
  167. for this game: ",XL$
  168. 1610 XNL = INSTR(2," B123456789AE",XL$)
  169. 1620 IF XNL = 0